package com.esl.util;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;

public class Printer implements Printable {
	private String printStr[];
	private int count;

	public int getCount() {
		return count;
	}

	public String[] getPrintStr() {
		return printStr;
	}

	/**
	 * @param Graphicָ
	 *            ����ӡ��ͼ�λ���
	 * @param PageFormatָ
	 *            ����ӡҳ��ʽ
	 *            ��ҳ���С�Ե�Ϊ������λ��1��Ϊ1Ӣ�ŵ�1/72��1Ӣ��Ϊ25.4���ס�58mm=165�㣬
	 * @param pageIndexָ
	 *            ��ҳ��
	 **/
	public int print(Graphics gra, PageFormat pf, int pageIndex)
			throws PrinterException {
		String str = "���ǲ�<��ѡ��>";
		Component c = null;
		// ת����Graphics2D
		Graphics2D g2 = (Graphics2D) gra;
		// ���ô�ӡ��ɫΪ��ɫ
		g2.setColor(Color.black);

		// ��ӡ������
		double x = pf.getImageableX();
		double y = pf.getImageableY();

		switch (pageIndex) {
		case 0:
			// ���ô�ӡ���壨������ơ���ʽ�͵��С����������ƿ�������������߼���ƣ�
			// Javaƽ̨�������������ϵ�У�Serif��SansSerif��Monospaced��Dialog ��
			// DialogInput
			Font font = new Font("����", Font.PLAIN, 12);
			Font font_1 = new Font("����", Font.PLAIN, 19);
			g2.setFont(font_1);// ��������
			float[] dash1 = { 2.0f };
			// ���ô�ӡ�ߵ����ԡ�
			// 1.�߿� 2��3����֪����4���հ׵Ŀ�ȣ�5�����ߵĿ�ȣ�6��ƫ����
			g2.setStroke(new BasicStroke(3.0f, BasicStroke.CAP_BUTT,
					BasicStroke.JOIN_MITER, 2.0f, dash1, 0.0f));

			g2.drawString(str, (float) x, (float) y + 15);
			// x += font.getSize2D();
			y += 15 + font.getSize2D();
			g2.setFont(font);// ��������

			// -1- ��Graphics2Dֱ�����
			// ���ַ�Ļ���(���²�)λ���û��ռ��е� (x, y) λ�ô�
			float heigth = font.getSize2D();// ����߶�
			for (int i = 0; i < printStr.length; i++) {
				g2.drawString(printStr[i], (float) x, (float) y + (i + 1)
						* heigth + 50);
			}

			g2.drawLine((int) (x), (int) (y + printStr.length * heigth + 80),
					(int) x + 200, (int) (y + printStr.length * heigth + 80));

			return PAGE_EXISTS;
		default:
			return NO_SUCH_PAGE;
		}
	}

	public void setCount(int count) {
		this.count = count;
	}

	public void setPrintStr(String[] printStr) {
		this.printStr = printStr;
	}

}
